/**********************************************************************
* 版权所有 (C)2019, 杭州玺文科技有限公司
*
* 文件名称：udp_server.h
* 文件标识：无
* 内容摘要：单线程udp 服务器
* 其它说明：无
* 当前版本：V1.0
* 作    者：zhenhuasu
* 完成日期：2019.08.27
*
**********************************************************************/

#ifndef UDP_SERVER_H
#define UDP_SERVER_H

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/epoll.h>
#include <fcntl.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>
#include "hithread.h"

//#define MAX_UDP_LEN 65507
#define MAX_UDP_LEN 1000
class UdpServer:public HiThread
{
public:
    UdpServer();
    ~UdpServer();

    int start_service(int port);
    int stop_service();
    virtual void on_udp_msg(char* buf, int len, char* dst_ip) = 0;

protected:
    void process();

private:
    bool is_run_;
    int serverfd_;
    fd_set rset_;
    struct sockaddr_in addr_;   
    char buf_[MAX_UDP_LEN];
};

#endif // UDP_SERVER_H
